home *** CD-ROM | disk | FTP | other *** search
- on ReadConfig
- global gVersion, gCfgName, gCfgPath, gGameData, gCanSave
- set lFileObj to EMPTY
- set lFileObj to FileIO(mnew, "READ", gCfgPath)
- set lChex to CheckConfig(lFileObj, gCfgName, gVersion)
- if lChex <> 1 then
- if lChex <> 0 then
- lFileObj(mdispose)
- end if
- set gGameData to CreateConfig()
- if WriteConfig() = 0 then
- set gCanSave to 0
- alert("Sorry, game saving is not available")
- else
- set gCanSave to 1
- end if
- else
- set lGameStr to ReadFile(lFileObj)
- set gGameData to ReadData(lGameStr)
- lFileObj(mdispose)
- end if
- end
-
- on CreateConfig
- global gMaxUsers, gRecStep, gCfgName, gVersion
- set lDataRecord to []
- append(lDataRecord, gCfgName)
- append(lDataRecord, gVersion)
- append(lDataRecord, 0)
- repeat with i = 1 to gMaxUsers
- repeat with j = 1 to gRecStep
- append(lDataRecord, EMPTY)
- end repeat
- end repeat
- return lDataRecord
- end
-
- on WriteConfig
- global gCanSave, gDontSave, gCfgPath, gGameData, gDelta
- if gCanSave = 0 then
- return 0
- end if
- set lFileObj to EMPTY
- set lFileObj to FileIO(mnew, "WRITE", gCfgPath)
- if not objectp(lFileObj) then
- beep(1)
- return 0
- end if
- set lWriteStr to writedata(gGameData)
- set lWrtReslt to lFileObj(mWriteString, lWriteStr)
- lFileObj(mdispose)
- if lWrtReslt = 0 then
- set gDelta to 0
- return 1
- else
- return 0
- end if
- end
-
- on CheckConfig pFileObj, pCfgName, pVersion
- if not objectp(pFileObj) then
- return 0
- end if
- if pFileObj(mGetLength) < 1 then
- return -1
- end if
- set lCurPos to pFileObj(mGetPosition)
- pFileObj(mSetPosition, 0)
- set FileCfgName to pFileObj(mReadLine)
- set FileCfgName to SearchReplace(FileCfgName, RETURN)
- if FileCfgName <> pCfgName then
- return -2
- end if
- set FileVer to value(pFileObj(mReadLine))
- if FileVer <> pVersion then
- return -3
- end if
- pFileObj(mSetPosition, lCurPos)
- return 1
- end
-